
package com.fire.web.modules.all.service;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.fire.web.modules.all.entity.AjaxResult;
import com.fire.web.modules.all.entity.BuildingModel;
import com.fire.web.modules.all.request.AddBuildingReq;

import java.util.List;
import java.util.Map;


/**
 * 建筑物Service
 *
 * @author Matthew
 * @Date 2019-01-17 20:47
 */
public interface IBuildingService extends IService<BuildingModel> {

	/**
	 * 根据 model 条件，查询一条记录
	 * @param model 实体对象 非空
	 * @return BuildingModel
	 */
	BuildingModel selectOne(BuildingModel model);

	/**
	 * 根据 entity 条件，查询全部记录
	 * @param model 实体对象封装操作类（可以为 null）
	 * @return List<BuildingModel>
	 */
	List<BuildingModel> selectList(BuildingModel model);

	/**
	 * 根据 Wrapper 条件，分页查询记录
	 * @param currentPage 当前页码
	 * @param pageSize 每页条数
	 * @param wrapper 条件
	 */
	Page<BuildingModel> selectPage(int currentPage, int pageSize, Wrapper<BuildingModel> wrapper);

	/**
	 * 根据 Wrapper 条件，分页查询Map记录
	 * @param currentPage 当前页码
	 * @param pageSize 每页条数
	 * @param wrapper 条件
	 */
	Page<Map<String, Object>> selectMapsPage(int currentPage, int pageSize, Wrapper<BuildingModel> wrapper);

	/**
	 * 获取下拉选列表
	 * @return
	 */
	AjaxResult getBuildingItem();

	/**
	 * 增加建筑物
	 * @return
	 */
	AjaxResult addBuilding(AddBuildingReq req, String userId);

	/**
	 * 更新建筑物
	 * @return
	 */
	AjaxResult updateBuilding(AddBuildingReq req);

	/**
	 * 查询建筑物Map列表(增加完整地址数据列)带分页
	 * @param page
	 * @param wrapper
	 * @return
	 */
	Page<Map<String, Object>> queryBuildingListMap(Page page, Wrapper wrapper, String username, String userId);
}
